(eval-last-sexp): Avoid introducing any
authorAndreas Schwab <schwab@suse.de>
Fri, 6 Jul 2007 17:29:51 +0000 (17:29 +0000)
committerAndreas Schwab <schwab@suse.de>
Fri, 6 Jul 2007 17:29:51 +0000 (17:29 +0000)
dynamic bindings around the evaluation of the expression.

lisp/emacs-lisp/lisp-mode.el

index 164756dfdc3593d10be52662796e23005bb13739..73379a816d78eeababd02418c8a3001647bdb216 100644 (file)
@@ -628,13 +628,13 @@ this command arranges for all errors to enter the debugger."
   (interactive "P")
   (if (null eval-expression-debug-on-error)
       (eval-last-sexp-1 eval-last-sexp-arg-internal)
-    (let ((old-value eval-last-sexp-fake-value) new-value value)
-      (let ((debug-on-error old-value))
-       (setq value (eval-last-sexp-1 eval-last-sexp-arg-internal))
-       (setq new-value debug-on-error))
-      (unless (eq old-value new-value)
-       (setq debug-on-error new-value))
-      value)))
+    (let ((value
+          (let ((debug-on-error eval-last-sexp-fake-value))
+            (cons (eval-last-sexp-1 eval-last-sexp-arg-internal)
+                  debug-on-error))))
+      (unless (eq (cdr value) eval-last-sexp-fake-value)
+       (setq debug-on-error (cdr value)))
+      (car value))))
 
 (defun eval-defun-1 (form)
   "Treat some expressions specially.